Users of mobile devices without native database applications or sufficient local storage capacity are often unable to fetch and display large datasets without experiencing degraded response times. Although response time is critical to the usefulness of user interfaces (UIs), UIs for current mobile operating systems and platforms are unable to display list views of large datasets (i.e., datasets with tens of thousands of records) without subjecting users to delays as they attempt to navigate the list views. This problem is compounded when ‘hybrid’ datasets are fetched. Such hybrid datasets may comprise a combination of textual and multimedia data such as graphics, audio, and video. The inability of mobile devices to effectively fetch and display large datasets results in a lack of responsiveness of mobile device user interfaces, particularly when the datasets include graphics images and icons.
The emergence and development of mobile computing devices allows users to access pertinent information from almost anywhere, without needing to be bound to a specific geographic location. Such users can use these devices to view relevant data while, for example, traveling from one physical location to another. This is particularly advantageous in a business environment, where mobile devices continue to become prevalent. Many business users from diverse occupations rely on the devices to access data from large datasets in the field. Some subset of enterprise and application databases is commonly downloaded, or synchronized, to these mobile devices for viewing in user interfaces on the mobile devices.
While the relative small size of a mobile device aids in portability, the size may also prove to be a hindrance for some users and applications, particularly for enterprise mobile users who need to fetch and view data from large datasets.
Despite advances in mobile technology, mobile devices typically have greater limitations on memory capacity, data storage capacity, central processing unit (CPU) capacity, and networkability than workstation computers. Due to these limitations, some mobile device operating platforms with touch screen interfaces, such as the iPhone™ operating system (OS) developed by Apple Inc., the Android platform from Google Inc.; and the Blackberry OS from Research In Motion (“RIM”) and similar mobile operating systems cannot display large dataset comprising many records (i.e., rows of data) in a single view. These limitations present challenges when different portions of large datasets are to be fetched and displayed in response to user scrolling or navigation inputs within a user interface (UI) of a mobile device. Given the versatility of mobile devices, it is desired to implement a means by which these mobile devices can quickly fetch and display subsets of large datasets from server-side databases and efficiently display these subsets in the context of potentially intermittent, unreliable, occasionally-connected, variable speed (quality of service), or temporarily-unavailable networking capabilities.
As more and more enterprise applications perform large database synchronizations from an application server to mobile devices, mobile device user interfaces are called upon to efficiently display larger and larger datasets. Despite advances in the central processing units (CPUs), memory capacity, and storage capacity realized with newer mobile devices, mobile applications consuming large amounts of memory to handle large datasets still degrade the user experience on mobile platforms. For example, traditional techniques for displaying a list view of a dataset including ten thousand icons that perform adequately on servers, workstations, and personal computers cause memory and CPU performance issues when implemented on mobile devices. Some mobile operating systems (OSs) attempt to address these issues by flagging application processes that are consuming large amounts of memory or CPU resources so additional resource allocation is made available to other applications. Such flagging can prevent the applications from consuming disproportionate amounts of memory. However, a drawback of this technique is that responsiveness of the flagged applications is degraded.
A traditional technique for displaying data from large datasets on mobile platforms relies on ‘just in time’ data retrieval whereby rows of data to be displayed are fetched as a user navigates to the data. However, fetching data rows as a user scrolls or otherwise navigates to data rows often results in unacceptably slow UI response times due to delays associated with such just in time fetching in wireless environments.
A conventional technique for displaying large datasets on a mobile device involves retrieving and storing the large dataset locally on the mobile device. However, one drawback of this technique is that many mobile devices lack native database applications and/or sufficient local storage capacity to locally store and display large datasets. Even with a relatively fast local native database, this technique can result in stale data being displayed without resource intensive data synchronization to keep the dataset up to date on the mobile device. Another disadvantage to this technique is a UI delay experienced by users while the large dataset is retrieved and stored.
Despite increased database performance achievable through indexing and query optimization, traditional database implementations in mobile environments are unable to scale up to handling large datasets without noticeable performance issues such as UI delays and lags.
Traditional techniques make it difficult for users to browse or view large data lists that extend beyond the current viewing area of a mobile device screen. Such a limitation makes traditional techniques inapplicable to applications that need to display long data lists on small display screens (e.g. mobile devices).
Accordingly, what is desired is the ability to fetch and quickly display subsets of data from large data sets on mobile devices in an efficient and economical manner.
What is further needed are systems, methods, and computer program products for reacting to a user's scrolling and touch gestures in an mobile device interface and dynamically displaying only what fits the mobile device screen at any point while browsing data. As mobile devices are often resource constrained, what is further needed is the ability for efficient data fetching that use minimal resources so that the systems and methods scale up to handle very large datasets. What is further needed is the ability to react to user touch gestures within a touch screen user interfaces and dynamically display only what fits into a mobile device's screen at any point while browsing data.